/* 博弈论
    SG函数
    sg(x)表示x下一步不能到达的最小状态，即0-(x-1)的状态都是可以到达的
    mex 函数：mex(S)=min{x},(x∉S,x∈N) (不属于集合S的最小自然数)
    SG 函数：SG(x)=mex{SG(y1),SG(y2),…,SG(yk)},( yi 为 x 的后继状态(1⩽i⩽k))
    n 个有向图，起点分别为 s1,s2,…sn，则SG(s1)⨁SG(s2)⨁…⨁SG(sn)=0 时先手必败，否则必胜

    证明:
        while(a1^a2^...^an) { //只取一次使得异或结果为0
            int x = a1^a2^...^an;
            设x的最高位的"1"是第k位
            一定存在ai的第k位是1，且ai^x < ai
            则将当前所有第k位是"1"的ai异或x
            一定可以使所有ai异或结果为0
        }
        则如果异或结果初始不为0，可以经过处理变为0
        所以异或结果=0先手必败，否则先手必胜(下一次给对手的结果为异或结果为0)

* 本题:
    SG函数模板题  
    求出所有棋子的 sg 函数值的异或值，若为0，则先手必败，否则先手必胜

*/
#define DEBUG
#pragma GCC optimize("O1,O2,O3,Ofast")
#pragma GCC optimize("no-stack-protector,unroll-loops,fast-math,inline")
#pragma GCC target("avx,avx2,fma")
#pragma GCC target("sse,sse2,sse3,sse4,sse4.1,sse4.2,ssse3")

#include <cstring>
#include <iostream>
#include <algorithm>
#include <set>
using namespace std;
// #define int long long
const int N = 2010, M = 6010;
int n,m,k;
int h[N],e[M],ne[M],idx;
int f[N];

void AddEdge(int a, int b) //, int c)
{
    e[idx] = b;  ne[idx] = h[a]; h[a] = idx++; //w[idx] = c;
}

int SG(int u)
{
    if(f[u]!=-1) return f[u]; //记忆化搜索

    //将能达到的点的SG函数值放入集合
    set<int> S;
    for(int i = h[u]; ~i; i = ne[i])
    {
        int v = e[i];
        S.insert(SG(v));
    }

    //找到集合不存在的最小自然数
    for(int i = 0; ; ++i)
        if(!S.count(i))
            return f[u]=i;
} 

signed main()
{
    #ifdef DEBUG
        freopen("./in.txt", "r", stdin);
    #else
        ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    #endif

    cin >> n >> m >> k;

    memset(h, -1, sizeof h);

    while(m--) {
        int a, b; cin >> a >> b;
        AddEdge(a, b);
    }

    memset(f, -1, sizeof f);

    int res = 0;
    for(int i = 0; i < k; i++){
        int u; cin >> u;
        res ^= SG(u);
    }

    if(res) puts("win");
    else puts("lose");
    return 0;
}